const AREA_STYLE = {
  EndColor: 1,
  FillColor: 15, //填充色
  FillMode: 0,
  OutPenWidth: 1,
  OverMethod: 0,
  PatAngle: 1,
  PatColor: 1,
  PatHeight: 1,
  PatID: 27,
  PatWidth: 1,
};
/**
 * @param {Array} position [[114,30],[114.50]]
 */
class Area {
  // 对圆无效
  static add({ position, attr, service, docLayer }) {
    /* 1、构建要素 */
    /* 几何 */
    var pointObj = new Array();
    position.forEach((item) => {
      pointObj.push(new Zondy.Object.Point2D(item[0], item[1]));
    });
    //设置区要素的几何信息
    var gArc = new Zondy.Object.Arc(pointObj);
    //构成区要素折线
    var gAnyLine = new Zondy.Object.AnyLine([gArc]);
    //构成区要素
    var gRegion = new Zondy.Object.GRegion([gAnyLine]);
    //构成区要素的几何信息
    var fGeom = new Zondy.Object.FeatureGeometry({ RegGeom: [gRegion] });
    /* 1-2、样式 */
    //设置区要素的图形参数信息
    var cRegionInfo = new Zondy.Object.CRegionInfo(AREA_STYLE);
    //要素图形参数信息
    var graphicInfo = new Zondy.Object.WebGraphicsInfo({
      InfoType: 3,
      RegInfo: cRegionInfo,
    });
    /* 属性 */
    var attValue = attr.map(item=>item.value);
    //创建一个新的区要素
    var newFeature = new Zondy.Object.Feature({
      AttValue: attValue,
      fGeom: fGeom,
      GraphicInfo: graphicInfo,
    });
    newFeature.setFType(3);
    /* 2、构建要素集添加要素 */
    //创建一个要素数据集
    var featureSet = new Zondy.Object.FeatureSet();
    var fldNumber = attr.length;
    var fldType = attr.map(item=>item.type);
    var fldName =attr.map(item=>item.key);
    var cAttValue = new Zondy.Object.CAttStruct({
      FldNumber: fldNumber,
      FldType: fldType,
      FldName: fldName,
    });
    featureSet.AttStruct = cAttValue;
    featureSet.addFeature(newFeature);
    /* 3、调用中地服务 */
    //创建一个要素编辑服务对象
    var editDocFeature = new Zondy.Service.EditDocFeature(service.docName,
         service.layerId, {
      ip: "localhost",
      port: "6163", //访问IGServer的端口号，.net版为6163，Java版为8089
    });
    editDocFeature.add(featureSet, this.onAddSuccess(docLayer));
  }
  //添加区要素回调函数
  static onAddSuccess(docLayer) {
    return function (data) {
      if (data) {
        console.log(data)
        alert("添加区要素成功！");
        docLayer.refresh();
      } else {
        alert("添加区要素失败！");
      }
    };
  }
}
export {Area}